<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
  <title>MyBatis Generator XML 配置参考</title>
  <link rel="stylesheet" type="text/css" href="../mbgstyle.css" />
</head>
<body>
<h1>MyBatis Generator XML 配置参考</h1>
<p>最常见的用例中，代码生成器(MBG)是由一个XML配置文件驱动。配置文件告诉MBG:</p>

<ul>
  <li>如何连接到数据库</li>
  <li>生成什么对象，以及如何生成它们</li>
  <li>那些表生成对象</li>
</ul>

<p>下面是一个MBG配置文件的例子。查阅每个元素单独的页面查看更多有关元素的更多信息和属性值。</p>
<pre>
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;!DOCTYPE generatorConfiguration
  PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
  "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"&gt;

&lt;generatorConfiguration&gt;
  &lt;classPathEntry location="/Program Files/IBM/SQLLIB/java/db2java.zip" /&gt;

  &lt;context id="DB2Tables" targetRuntime="MyBatis3"&gt;
    &lt;jdbcConnection driverClass="COM.ibm.db2.jdbc.app.DB2Driver"
        connectionURL="jdbc:db2:TEST"
        userId="db2admin"
        password="db2admin"&gt;
    &lt;/jdbcConnection&gt;

    &lt;javaTypeResolver &gt;
      &lt;property name="forceBigDecimals" value="false" /&gt;
    &lt;/javaTypeResolver&gt;

    &lt;javaModelGenerator targetPackage="test.model" targetProject="\MBGTestProject\src"&gt;
      &lt;property name="enableSubPackages" value="true" /&gt;
      &lt;property name="trimStrings" value="true" /&gt;
    &lt;/javaModelGenerator&gt;

    &lt;sqlMapGenerator targetPackage="test.xml"  targetProject="\MBGTestProject\src"&gt;
      &lt;property name="enableSubPackages" value="true" /&gt;
    &lt;/sqlMapGenerator&gt;

    &lt;javaClientGenerator type="XMLMAPPER" targetPackage="test.dao"  targetProject="\MBGTestProject\src"&gt;
      &lt;property name="enableSubPackages" value="true" /&gt;
    &lt;/javaClientGenerator&gt;

    &lt;table schema="DB2ADMIN" tableName="ALLTYPES" domainObjectName="Customer" &gt;
      &lt;property name="useActualColumnNames" value="true"/&gt;
      &lt;generatedKey column="ID" sqlStatement="DB2" identity="true" /&gt;
      &lt;columnOverride column="DATE_FIELD" property="startDate" /&gt;
      &lt;ignoreColumn column="FRED" /&gt;
      &lt;columnOverride column="LONG_VARCHAR_FIELD" jdbcType="VARCHAR" /&gt;
    &lt;/table&gt;

  &lt;/context&gt;
&lt;/generatorConfiguration&gt;

</pre>
<p>有关此文件的重要说明:</p>
<ul>
  <li>该文件指定旧式DB2 CLI驱动程序将用于连接到数据库，并指定在何处可以找到驱动程序。</li>
  <li>Java类型解析器不应该强制型对象字段BigDecimal的使用，这意味着整数类型(短、整型、长等)如果可能的话将被取代。
      此功能是为了使数据库DECIMAL和NUMERIC列容易处理。</li>
  <li>Java模型生成器应该使用子包。
      这意味着在这种情况下生成的模型对象将被放置在名为
      <code>test.model.db2admin</code> 的包中（因为表在 DB2ADMIN schema中）。
      如果 <code>enableSubPackages</code>  属性设置为 <code>false</code>，
      那么包名将会是 <code>test.model</code>。
      Java模型生成器也应该对字符串进行trim操作。
      这意味着任何字符串属性的setter方法将调用trim方法 - 如果您的数据库可能会在字符末尾返回空白符，这是非常有用的。</li>
  <li>SQL映射生成器将使用子包。这意味着这种情况下生成的XML文件将被放置在名为
      <code>test.xml.db2admin</code> 的包中（因为表在 DB2ADMIN schema中）。
      如果 <code>enableSubPackages</code>  属性设置为 <code>false</code>，
      那么包名将会是 <code>test.xml</code>。</li>
  <li>DAO生成器将使用子包。这意味着这种情况下生成的DAO类都会被放置在名为
      <code>test.dao.db2admin</code> 的包中（因为表在 DB2ADMIN schema中）。
      如果 <code>enableSubPackages</code>  属性设置为 <code>false</code>，
      那么包名将会是 <code>test.dao</code>。
      DAO生成器会生成一些引用Mybatis XML配置的mapper接口。
  </li>
  <li>The file specifies only one table will be introspected, but many more could be specified.
      Important notes about the specified table include:
    <ul>
      <li>The generated objects will be based on the name Customer (<code>CustomerKey</code>,
          <code>Customer</code>,
          <code>CustomerMapper</code>, etc.) - rather than on the table name.</li>
      <li>Actual column names will be used as properties.  If this property were set to
          <code>false</code> (or not specified), then MBG would attempt to camel case
          the column
          names.  In either case, the name can be overridden by the
          <code>&lt;columnOverride&gt;</code>
          element</li>
      <li>The column has a generated key, it is an identity column, and the database type is DB2.
          This will cause
          MBG to generate the proper
          <code>&lt;selectKey&gt;</code> element in the generated
          <code>&lt;insert&gt;</code>
          statement so that the newly generated key can be returned (using DB2 specific SQL).</li>
      <li>The column <code>DATE_FIELD</code> will be mapped to a property called
          <code>startDate</code>.  This will
          override the default property which would be
          <code>DATE_FIELD</code> in this case, or <code>dateField</code>
          if the <code>useActualColumnNames</code> property was set to
          <code>false</code>.</li>
      <li>The column <code>FRED</code> will be ignored.  No SQL will list the field,
          and no Java property will be generated.</li>
      <li>The column <code>LONG_VARCHAR_FIELD</code> will be treated as a
          <code>VARCHAR</code> field, regardless of the actual data type.</li>
    </ul>
  </li>
</ul>
</body>
</html>
